1
תגובות
אם יש לי תיקיה שקוראים לה includes ובתוכה יש את הקבצים הבאים:
header.php
[b]footer.php
config.php[/b]
ויש לי תיקיה ראשית בשם public_html ובתוכה יש את index.php
ויש לי תיקיה שקוראים לה hay ובתוכה יש לי את הקובץ
index.php
בתוכו יש לי include ל
includes/header.php/..
וגם ל
includes/footer.php/..
אבל בתוך header.php יש לי include ל
config.php
כנ"ל לגבי ה[b]index.php[/b] שבתיקייה הראשית.
אבל בגלל שהheader.php לא נמצא עם הindex.php הראשי באותה תיקייה, אז בתוך הheader.php צריך לעשות include לincludes/config.php/ ואז זה יעבוד, אבל אם ניגש לתיקייה hay נקבל שגיאה, כיוון שהheader.php לא ימצא את includes/config.php/, נתיב זה תקף לתיקייה הראשית בלבד!
מה הפיתרון?
header.php
[b]footer.php
config.php[/b]
ויש לי תיקיה ראשית בשם public_html ובתוכה יש את index.php
ויש לי תיקיה שקוראים לה hay ובתוכה יש לי את הקובץ
index.php
בתוכו יש לי include ל
includes/header.php/..
וגם ל
includes/footer.php/..
אבל בתוך header.php יש לי include ל
config.php
כנ"ל לגבי ה[b]index.php[/b] שבתיקייה הראשית.
אבל בגלל שהheader.php לא נמצא עם הindex.php הראשי באותה תיקייה, אז בתוך הheader.php צריך לעשות include לincludes/config.php/ ואז זה יעבוד, אבל אם ניגש לתיקייה hay נקבל שגיאה, כיוון שהheader.php לא ימצא את includes/config.php/, נתיב זה תקף לתיקייה הראשית בלבד!
מה הפיתרון?
1 תשובות
לא בטוח עם מישהו הי פעם יבין את השאלה שלך, אבל ככה:
שים לב שנטיב יחסי הוא תמיד ביחס לקובץ המקורי שהשרת מפעיל (בדרך כלל קובץ ה index.php)
ככה שאם אתה כותב נתיב יחסי בתוך קובץ header.php, הוא עדיין יחושב ביחס לקובץ index.php שמופעל, ולא ביחס לקובץ header כמו שאתה מצפה. כדי לתקן את זה, או יותר נכון, כדי תמיד לכתוב בצורה יחסית לקבוץ שבו הפקודה נמצאת - אתה יכול להשתמש ב __DIR__. ראה דוגמאות אחרונות למטה.
// Relative path to the file _opened in browser_ !!!!!
include 'file.php'; // in the same folder
include './file.php'; // also, in the same folder
include '../file.php'; // folder above
include '../another/file.php'; // go folder above, from there go to folder 'another'
// Absolute path
include 'C:/wamp/public_html/this/file.php'; // absolute path
// how i do it
// Relative to the file, in which you write the include
include __DIR__.'/file.php'; // same folder
include __DIR__.'/../file.php'; // folder above
include __DIR__.'/../another/folder/file.php';
include 'file.php'; // in the same folder
include './file.php'; // also, in the same folder
include '../file.php'; // folder above
include '../another/file.php'; // go folder above, from there go to folder 'another'
// Absolute path
include 'C:/wamp/public_html/this/file.php'; // absolute path
// how i do it
// Relative to the file, in which you write the include
include __DIR__.'/file.php'; // same folder
include __DIR__.'/../file.php'; // folder above
include __DIR__.'/../another/folder/file.php';
נניח שיש לך את שני הקבצים הבאים:
[
public_html/index.php
include '../includes/header.php';
includes/header.php
include 'footer.php';
שים לב שהשרת יחפש את header ביחס ל index.php
אבל גם את footer הוא יחפש ביחס ל index.php (ולא ביחס ל header כמו שזה יכול להיראות)
כדי שזה לא יקרה, תמיד תוסיף לפני __DIR__ שאומר "התיקיה הנוכחית שבה נמצא הקובץ הזה עצמו"
public_html/index.php
include __DIR__.'/../includes/header.php';
includes/header.php
include __DIR__.'/footer.php';